<?php

namespace App\Http\Controllers\App;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class OssController extends Controller
{	
	/**
	 * 获取web直传key
	 * @return [type] [description]
	 */
	public function getWebKey()
	{
		$id   = 'LTAIZ23GkQIjMoJu';
		$key  = 'lSgHmhdnCOYFYcy60JSu34nhOjQfXy';
		$host = 'http://accessorygx.oss-cn-qingdao.aliyuncs.com';
	    // $host = 'http://enclosure.oss-cn-hangzhou.aliyuncs.com';

		$now        = time();
		$expire     = 30; //设置该policy超时时间是10s. 即这个policy过了这个有效时间，将不能访问
		$end        = $now + $expire;
		$expiration = $this->gmt_iso8601($end);
		
		$dir        = 'pic/';

	    //最大文件大小.用户可以自己设置
		$condition    = array(0=>'content-length-range', 1=>0, 2=>1048576000);
		$conditions[] = $condition; 

	    //表示用户上传的数据,必须是以$dir开始, 不然上传会失败,这一步不是必须项,只是为了安全起见,防止用户通过policy上传到别人的目录
		$start        = array(0=>'starts-with', 1=>'$key', 2=>$dir);
		$conditions[] = $start; 


	    $arr = array('expiration'=>$expiration,'conditions'=>$conditions);
	    //echo json_encode($arr);
	    //return;
		$policy         = json_encode($arr);
		$base64_policy  = base64_encode($policy);
		$string_to_sign = $base64_policy;
		$signature      = base64_encode(hash_hmac('sha1', $string_to_sign, $key, true));

		$response              = array();
		$response['accessid']  = $id;
		$response['host']      = $host;
		$response['policy']    = $base64_policy;
		$response['signature'] = $signature;
		$response['expire']    = $end;
	    //这个参数是设置用户上传指定的前缀
		$response['dir'] = $dir;
	    return self::json($response);
	}

	private function gmt_iso8601($time)
	{
		$dtStr      = date("c", $time);
		$mydatetime = new  DateTime($dtStr);
		$expiration = $mydatetime->format(DateTime::ISO8601);
		$pos        = strpos($expiration, '+');
		$expiration = substr($expiration, 0, $pos);
        return $expiration."Z";
    } 

    /**
     * osss 上传获取参数
     *
     * @return void
     */
   public function getkey()
   {
       $oss = include_once(base_path('extend/sts-server/sts.php')); 
       unset($oss['status']);

       return self::json($oss);
   }
}
